package br.com.sgmf.web.managedbean;

import br.com.sgmf.model.Peca;
import br.com.sgmf.service.PecaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import java.util.List;

@Controller
@Scope("request")
public class PecaBean {

    private static final String PECA_CADASTRADA_COM_SUCESSO = "Peça cadastrada com sucesso!";
    private static final String PECA_EDITADA_COM_SUCESSO = "Peça editada com sucesso!";
    private static final String PECA_EXCLUIDA_COM_SUCESSO = "Peça excluída com sucesso!";

    private Peca peca;
    private List<Peca> pecas;

    @Autowired
    private PecaService pecaService;

    @PostConstruct
    public void init() {
        peca = new Peca();
        pecas = pecaService.findAll();
    }

    public String salvar() {
        FacesMessage message;

        if (peca.getId() == null) {
            pecaService.save(peca);
            message = new FacesMessage(FacesMessage.SEVERITY_INFO, PECA_CADASTRADA_COM_SUCESSO, null);
        } else {
            pecaService.update(peca);
            message = new FacesMessage(FacesMessage.SEVERITY_INFO, PECA_EDITADA_COM_SUCESSO, null);
        }

        peca = new Peca();

        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, message);

        return null;
    }

    public String editar(Peca peca) {
        this.peca = peca;
        return null;
    }

    public String excluir(Peca peca) {
        pecaService.delete(peca);

        peca = new Peca();

        FacesContext context = FacesContext.getCurrentInstance();
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, PECA_EXCLUIDA_COM_SUCESSO, null);
        context.addMessage(null, message);

        return null;
    }

    public Peca getPeca() {
        return peca;
    }

    public void setPeca(Peca peca) {
        this.peca = peca;
    }

    public List<Peca> getPecas() {
        return pecas;
    }

    public void setPecas(List<Peca> pecas) {
        this.pecas = pecas;
    }

}
